#include <stdio.h>
#include <getch.h>
#include <stdbool.h>
#include <string.h>

char name[100][20]={};
char sex[100]={};
char tell[100][12]={};

int i=0;

// 添加联系人，要求不超过100人，超过100则显示添加失败
void insert()
{
	printf("请输入姓名：");
	scanf("%s",name[i]);
	printf("请输入性别（1、男 2、女）:");
	scanf("%s",&sex[i]);
	if(sex[i]!='1'&&sex[i]!='2')
	{
		sex[i]='\0';
		printf("输入信息有误，请重新输入。\n");
		return;
	}
	printf("请输入电话号码:");
	scanf("%s",tell[i]);
	while(strlen(tell[i])<11)
	{      
		printf("输入电话太短，请重新输入:");
		scanf("%s", tell[i]);
	}
	getchar();
	printf("\n");
	i++;
}

// 删除联系人
void delete()
{
	if(i>0)
	{
		while(i>0)
		{
			if(sex[i-1]=='\0')
			{
				i--;
				continue;
			}
			else
			{
				sex[i-1] = '\0';
				i--;
				break;
			}
		}
	}
	if(i==0)
	{
		printf("电话簿中无记录\n");
	}
}

//修改联系人，按姓名删除（要保证不能重名）
void update()
{
	for(int j=0; j<i; j++)
	{
		for(int k=0; k<j;k++)
		{
			if(strcmp(name[j],name[k])==0)
			{
				sex[j] = '\0';
			}
		}
	}
}

//查找联系人，根据电话号码查找联系人
void find()
{
	printf("电话:");
	char find[12]={};
	scanf("%s",find);
	for(int j=0; j<i; j++)
	{
		if(strcmp(find,tell[j])==0)
		{
			printf("姓名：%s,",name[j]);
			if(sex[j]=='1')
			{
				printf("性别：男,");
			}
			if(sex[j]=='2')
			{
				printf("性别：女,");
			}
			printf("电话：%s\n",tell[j]);
			break;
		}
		if(j==i-1)
		{
			printf("没有对应记录。\n");
		}
	}
	getchar();
}

// 显示所有联系人
void show()
{
	for(int i=0;i<100;i++)
	{
		if(sex[i] != '\0')
		{
			printf("姓名：%s,",name[i]);
			if(sex[i]=='1')
			{
				printf("性别：男,");
			}
			if(sex[i]=='2')
			{
				printf("性别：女,");
			}
			printf("电话：%s\n",tell[i]);
			//printf("姓名：%s,性别：%c,电话：%s\n",name[i],sex[i],tell[i]);
		}
	}
	printf("\n");
}

// 菜单
char menu(void)
{
	printf("***欢迎使用指针电话簿***\n");
	printf("------------------------\n");
    printf("1、 添加\n");
	printf("2、 删除\n");
	printf("3、 修改\n");
	printf("4、 查找\n");
	printf("5、 显示\n");
	printf("q、 退出\n");
    printf("------------------------\n");
	printf("请输入指令:");
	char cmd = getch();
	printf("%c\n",cmd);
	return cmd;
}


int main()
{
	while(true)
	{
		switch(menu())
		{
			case '1': printf("insert()\n"); insert(); show();break;
			case '2': printf("delete()\n"); delete(); show();break;
			case '3': printf("update()\n"); update(); show();break;
			case '4': printf("find()\n"); find(); break;
			case '5': printf("show()\n"); show(); break;
			case 'q': printf("exit()\n"); return 0;
			default : printf("cmd error!\n");
		}
	}
}
